.TH AMIDI 1 "30 Aug 2016"

.SH NAME
amidi \- read from and write to ALSA RawMIDI ports

.SH SYNOPSIS
\fBamidi\fP [\fI\-p port\fP] [\fI\-s file\fP | \fI\-S data\fP]
[\fI\-r file\fP] [\fI\-d\fP] [\fI\-t seconds\fP] [\fI\-a\fP]

.SH DESCRIPTION
.B amidi
is a command-line utility which allows one to receive and send
SysEx (system exclusive) data from/to external MIDI devices.
It can also send any other MIDI commands.

.B amidi
handles only files containing raw MIDI commands, without timing
information.
.B amidi
does not support Standard MIDI (.mid) files, but
.B aplaymidi(1)
and
.B arecordmidi(1)
do.

.SH OPTIONS

Use the
.I \-h,
.I \-V,
.I \-l,
or
.I \-L
options to display information;
or use at least one of the
.I \-s,
.I \-r,
.I \-S,
or
.I \-d
options to specify what data to send or receive.

.TP
.I \-h, \-\-help
Help: prints a list of options.

.TP
.I \-V, \-\-version
Prints the current version.

.TP
.I \-l, \-\-list\-devices
Prints a list of all hardware MIDI ports.

.TP
.I \-L, \-\-list\-rawmidis
Prints all RawMIDI definitions.
(used when debugging configuration files)

.TP
.I \-p, \-\-port=name
Sets the name of the ALSA RawMIDI port to use.
If this is not specified,
.B amidi
uses the default port defined in the configuration file
(the default for this is port 0 on card 0, which may not exist).

.TP
.I \-s, \-\-send=filename
Sends the contents of the specified file to the MIDI port.
The file must contain raw MIDI commands (e.g. a .syx file);
for Standard MIDI (.mid) files, use
.B aplaymidi(1).

.TP
.I \-r, \-\-receive=filename
Writes data received from the MIDI port into the specified file.
The file will contain raw MIDI commands (such as in a .syx file);
to record a Standard MIDI (.mid) file, use
.B arecordmidi(1).

.B amidi
will filter out any Active Sensing and Clock bytes (FEh, F8h), unless the
.I \-a
or
.I \-c
options have been given.

.TP
.I \-S, \-\-send\-hex="..."
Sends the bytes specified as hexadecimal numbers to the MIDI port.

.TP
.I \-d, \-\-dump
Prints data received from the MIDI port as hexadecimal bytes.
Active Sensing and Clock bytes (FEh, F8h) will not be shown, unless the
.I \-a
or
.I \-c
options have been given.

This option is useful for debugging.

.TP
.I \-t, \-\-timeout=seconds
Stops receiving data when no data has been received for the specified
amount of time.

If this option has not been given, you must press Ctrl+C (or kill
.B amidi\fR)
to stop receiving data.

.TP
.I \-a, \-\-active\-sensing
Does not ignore Active Sensing bytes (FEh) when saving or printing
received MIDI commands.

.TP
.I \-c, \-\-clock
Does not ignore Clock bytes (F8h) when saving or printing received
MIDI commands.

.TP
.I \-i, \-\-sysex-interval=mseconds
Adds a delay in between each SysEx message sent to a device. It is
useful when sending firmware updates via SysEx messages to a remote
device.

.SH EXAMPLES

.TP
.B amidi \-p hw:0 \-s my_settings.syx
will send the MIDI commands in
.I my_settings.syx
to port
.I hw:0.

.TP
.B amidi \-p hw:1,0,0 -s firmware.syx \-i 100
will send the MIDI commands in
.I firmware.syx
to port
.I hw:1,0,0
with 100 milliseconds delay in between each SysEx message.

.TP
.B amidi \-S 'F0 43 10 4C 00 00 7E 00 F7'
sends an XG Reset to the default port.

.TP
.B amidi \-p hw:1,2 \-S F0411042110C000000000074F7 \-r dump.syx \-t 1
sends a \(lqParameter Dump Request\(rq to a GS device, saves the received
parameter data to the file
.I dump.syx,
and stops after the device has finished sending data
(when no data has been received for one second).

.TP
.B amidi \-p virtual \-d
creates a virtual RawMIDI port and prints all data sent to this port.

.SH FILES
.I /usr/share/alsa/alsa.conf
default rawmidi definitions
.br
.I /etc/asound.conf
system\-wide rawmidi definitions
.br
.I ~/.asoundrc
user specific rawmidi definitions

.SH SEE ALSO
aplaymidi(1)
.br
arecordmidi(1)

.SH AUTHOR
Clemens Ladisch <clemens@ladisch.de>
